
/** @description 需求：希望按照层级，给每个对象都添加一个属性‘index’，且按照顺序添加，比如：
 * 
 *  const data_last = [
 *    {index:'1', child:[{index:'1-1'},{index:'1-2'}]},
 *    {index:'2', child:[{index:'2-1'},{index:'2-2', child:[{index:'2-2-1'},{index:'2-2-2'}]}]}
 *  ]
 */


// 数据源
const items = [
  { name:'a', child:[{ name:'b' }] },
  { name:'c', child:[{ name:'d' }, { name:'e' }] },
  { name:'f', child:[{ name:'张三' }, { name:'李四' }, { name:'张龙' }, { name:'赵虎' },{ name:'张三1' }, { name:'李四1' }] },
  {
    "name": "g", 
    "child": [
        {
            "name": "h"
        }, 
        {
            "name": "i", 
            "child": [
                {
                    "name": "j"
                }, 
                {
                    "name": "k"
                }
            ]
        }
    ]
  },
  {
    "name": "g", 
    "child": [
        {
            "name": "h"
        }, 
        {
            "name": "i", 
            "child": [
                {
                    "name": "j"
                }, 
                {
                    "name": "k", 
                    "child": [
                        {
                            "name": "A"
                        }, 
                        {
                            "name": "B"
                        }
                    ]
                }
            ]
        }
    ]
  },
  { name:'x', child:[{ name:'y' }] },
]

// 下面是函数（写的有点糟心 @(-v-)@ ）
let parent_index = ''
let level = 1

function sortIndex(datas) {
  datas = datas.map((obj, index) => {
    //index默认从0开始，我们需要它从1开始
    index = index + 1

    // 1、如果没有index属性，就添加
    if (!obj.index) {
      if (level == 1) {
        obj['index'] = index
      } else {
        obj['index'] = parent_index + '-' +index
      }
    }

    // 2、如果child有内容
    if (obj.child && Array.isArray(obj.child) && obj.child.length > 0) {

      level++

      // 开始下一个递归，比如parent_index是2，但是当前obj[index] = '2-2'，
      // 那么下一个parent_index应该是'2-2'
      if(parent_index.length == 0) {
        parent_index = index 
      } else if(level > 2) {
        parent_index = parent_index + '-' + index 
      } else {
        parent_index = index
      }
      // 递归
      sortIndex(obj.child)

    } else {
      // 3、如果child没有内容
      // 先判断当前这一轮child循环是否最后一个
      if (index == datas.length) {
        level = 1 //重置等级
        parent_index = index + 1 + ''
      }
    }
  })
}

// 调用
sortIndex(items)

console.log('\n打印')
items.forEach((item)=>{
  console.log('\n' + JSON.stringify(item))
})

console.log('\n\n\n\n')
console.log(JSON.stringify(items))

module.exports = {sortIndex}